package com.example.examsystem.dto;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * 通用分页响应数据传输对象
 * 用于封装分页查询结果
 * @param <T> 数据类型
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PageResponse<T> {
    
    /**
     * 当前页数据列表
     */
    private List<T> content;
    
    /**
     * 当前页码（从0开始）
     */
    private int page;
    
    /**
     * 每页大小
     */
    private int size;
    
    /**
     * 总记录数
     */
    private long totalElements;
    
    /**
     * 总页数
     */
    private int totalPages;
    
    /**
     * 是否为第一页
     */
    public boolean isFirst() {
        return page == 0;
    }
    
    /**
     * 是否为最后一页
     */
    public boolean isLast() {
        return page == totalPages - 1;
    }
    
    /**
     * 是否有下一页
     */
    public boolean hasNext() {
        return page < totalPages - 1;
    }
    
    /**
     * 是否有上一页
     */
    public boolean hasPrevious() {
        return page > 0;
    }
}







